package com.chee.plant.hibernate.dao;

import java.util.List;

import org.hibernate.Query;
import org.hibernate.Session;

import com.chee.plant.hibernate.object.Medicine;
import com.chee.plant.server.HibernateSessionFactory;

/**
 * 对应Medicine数据库访问操作
 * 
 * @author xue cb
 * 
 */
public class MedicineDAO {
	/**
	 * 根据药品id查询特定药品信息
	 * 
	 * @param id
	 *            药品id
	 * @return 如果存在返回特定药品，不存在返回null
	 */
	public Medicine getMedicineById(int id) {
		Session session = HibernateSessionFactory.getSession();
		String hql = "select medicine from Medicine medicine where medicine.Id=:id";
		Query query = session.createQuery(hql);
		query.setInteger("id", id);
		return (Medicine) query.uniqueResult();
	}

	/**
	 * 获取所有可以从npc购买到的药品，数据库中0代表可以从npc买到，1代表不可以从npc买到。
	 * 
	 * @return 如果存在返回可以购买的药水（化肥），不存在返回null
	 */
	@SuppressWarnings("unchecked")
	public List<Medicine> getAllMedicine() {
		Session session = HibernateSessionFactory.getSession();
		String hql = "select medicine from Medicine as medicine where medicine.NpcSell=0";
		Query query = session.createQuery(hql);
		List<Medicine> list = query.list();
		return list;
	}

	/**
	 * 主方法，用于测试
	 * 
	 * @param args
	 */
	public static void main(String[] args) {
		// 1,测试getMedicineById(int id)
		Medicine medicine = new MedicineDAO().getMedicineById(2);
		System.out.println(medicine.getDesc());

		// 2，测试getAllMedicine()
		List<Medicine> list = new MedicineDAO().getAllMedicine();
		System.out.println(list.size());
	}
}
